package com.ruoyi.system.utils;

import com.ruoyi.common.utils.StringUtils;

import java.time.LocalDate;
import java.time.Period;
import java.time.format.DateTimeFormatter;

public class CardNumberUtils {

    public static int calculateAge(String idCardNumber) {
        if (idCardNumber == null || idCardNumber.length() != 18) {
            return 0;
        }
        String birthDateStr = idCardNumber.substring(6, 14);
        DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyyMMdd");
        LocalDate birthDate = LocalDate.parse(birthDateStr, formatter);
        LocalDate currentDate = LocalDate.now();
        Period period = Period.between(birthDate, currentDate);
        return period.getYears();
    }


    /**
     * 证件号码脱敏处理
     *
     * @param idNumber 原始证件号码
     * @return 脱敏后的证件号码 (保留前14位，后4位显示为*)
     */
    public static String maskIdNumber(String idNumber) {
        if (StringUtils.isEmpty(idNumber)) {
            return "";
        }
        if (idNumber == null || idNumber.length() <= 14) {
            return idNumber; // 如果长度不足或不合法，直接返回
        }

        // 保留前14位，后面用*代替
        String visiblePart = idNumber.substring(0, 14);
        String maskedPart = idNumber.substring(14).replaceAll(".", "*");
        return visiblePart + maskedPart;
    }

    /**
     * 手机号码脱敏处理
     *
     * @param phoneNumber 原始手机号码
     * @return 脱敏后的手机号码 (前3位，后4位显示，中间用*代替)
     */
    public static String maskPhoneNumber(String phoneNumber) {
        if (StringUtils.isEmpty(phoneNumber)) {
            return "";
        }
        if (phoneNumber == null || phoneNumber.length() != 11) {
            return phoneNumber; // 如果不是11位手机号，直接返回
        }

        // 保留前3位和后4位，中间用*代替
        String prefix = phoneNumber.substring(0, 3);
        String suffix = phoneNumber.substring(phoneNumber.length() - 4);
        return prefix + "****" + suffix;
    }

    public static void main(String[] args) {
        // 测试示例
        String idNumber = "510603200411263090";
        System.out.println(calculateAge(idNumber));

    }


}
